<?php
/**
 * Account_Controller
 * - Controller for module page Home
 * @author ANHTAM
 * @since 1.1 - Sep 27, 2011
 * $Id: $
 */
// Require module for controller

class Account_Controller extends Controller {
	/**
     * - Constructor
     */
    public function __construct() {
    	parent::__construct();
    	$this->errorArr = array();
    }
    
    /**
     * actionIndex
     * - page index of controller
     */
    public function actionIndex() {
    	
    	// Process init
        $objView = new View ();
        $this->tpl_title = '.::MUA THẺ NHANH::.';
        
        // Process view
        $objView->assignobj($this);
        $objView->display();
    }
    
	/**
     * actionLogin
     * - page login of controller
     */
    public function actionLogin() {
    	
    	// Process init
        $objView = new View ();
        $this->tpl_title = '.::MUA THẺ NHANH::.';
        $this->er = false;
        $this->countLogin = (Session::Get("TOTALLOGIN") > 0) ? Session::Get("TOTALLOGIN") : 0;
        $this->loginAction = false;
        
    	$mUser = new MUser();
        $this->getPost = FunctionCommon::getPost(array('nickname', 'password', 'urlNow', 'captcha'));        
        if (isset($_POST['butSub'])) {
        	if (isset($_POST['captcha'])) {
        		$captcha = $_POST['captcha'];
        		if ($captcha == '') {
        			$this->errorArr['captcha'] = "Bạn chưa nhập mã ở hình bên";
        		} else {
        			if ($captcha != $_SESSION['CAPTCHA']) {
        				$this->errorArr['captcha'] = "Bạn nhập chưa đúng mã";
        			}
        		}
        	}
        	$checkUser = $mUser->checkLogin($this->getPost['nickname'], md5($this->getPost['password']));
        	if (is_array($checkUser) && !empty($checkUser) && count($this->errorArr) == 0) {
        		Session::Set("MLOGIN", $checkUser);
        		Session::Remove("TOTALLOGIN");
        		$this->loginAction = true;
        	}
        	Session::Set("TOTALLOGIN", ($this->countLogin + 1));
        	$this->errorArr['nickname'] = 'Bạn đăng nhập không đúng';
        } else {
        	if (isset($_GET['er']) && $_GET['er'] == 1) {
        		$this->er = true;
        	}
        }
        $this->countLogin = (Session::Get("TOTALLOGIN") > 0) ? Session::Get("TOTALLOGIN") : $this->countLogin;
        
        // Process view
        $objView->assignobj($this);
        $objView->display();
    }
    
	/**
     * actionOut
     * - page out of controller
     */
    public function actionOut() {
    	
    	// Process init
        $objView = new View ();
        $this->tpl_title = '.::MUA THẺ NHANH::.';
        $this->loginAction = true;
        Session::Remove("MLOGIN");
        
        // Process view
        $objView->assignobj($this);
        $objView->display();
    }
    
	/**
     * actionRegister
     * - page login of controller
     */
    public function actionRegister() {
    	
    	// Process init
        $objView = new View ();
        $this->tpl_title = '.::MUA THẺ NHANH::.';
        $this->flagUp = false;
        $this->buttonIn = false;
        $this->buttonUp = false;
        
    	$mUser = new MUser();
        $this->getPost = FunctionCommon::getPost(array('gioitinh', 'ddNgay', 'ddThang', 'ddNam', 'hoten', 'congty', 'quocgia', 'tinh', 'diachi', 'phone', 'phone2', 'email', 'fax', 'web', 'nickname', 'pass', 'txtRePassword', 'chkShow'));
		$this->getGet = FunctionCommon::getGet(array('c'));
        if (isset($_POST['butSub']) && $this->getGet['c'] != 'up' && $this->checkValidator($this->getPost)) {
        	if ($mUser->checkUser($this->getPost['nickname'])) {
        		if ($mUser->checkEmail($this->getPost['email'])) {
   					// Insert user new
   					$mUser->setAttribute('seq', $mUser->getMinMax(array(), true) + 1);
        			$mUser->setAttribute('nickname', $this->getPost['nickname']);
        			$mUser->setAttribute('pass', md5($this->getPost['pass']));
        			$mUser->setAttribute('email', $this->getPost['email']);
        			$mUser->setAttribute('phone', $this->getPost['phone']);
        			$mUser->setAttribute('phone2', $this->getPost['phone2']);
        			$mUser->setAttribute('fax', $this->getPost['fax']);
        			$mUser->setAttribute('web', $this->getPost['web']);
        			$mUser->setAttribute('hoten', $this->getPost['hoten']);
        			$mUser->setAttribute('gioitinh', $this->getPost['gioitinh']);
        			$mUser->setAttribute('ngaysinh', ($this->getPost['ddNam']."-".$this->getPost['ddThang']."-".$this->getPost['ddNgay']." 00:00:00"));
        			$mUser->setAttribute('quyen', '5');
        			$mUser->setAttribute('diachi', $this->getPost['diachi']);
        			$mUser->setAttribute('congty', $this->getPost['congty']);
        			$mUser->setAttribute('tinh', $this->getPost['tinh']);
        			$mUser->setAttribute('quocgia', $this->getPost['quocgia']);
        			$mUser->setAttribute('insert_at', date('Y-m-d H:i:s'));
        			
        			$sendMai = array(array('name'=>$this->getPost['hoten'], 'mail'=>$this->getPost['email']));
        			$subJ = "Thông tin đăng ký tài khoản tại MuaTheNhanh";
        			$body = " + NickName : " . $this->getPost['nickname'] . "\n ".
        					"+ Password : " . $this->getPost['pass'] . "\n ".
        					"+ Email : " . $this->getPost['email'] . "\n ".
        					"+ Số điện thoại : " . $this->getPost['phone'] . "\n ".
        					"+ Địa chỉ : " . $this->getPost['diachi'] . "\n ".
        					"+ Tham gia ngày : " . FunctionCommon::convertDate(date('Y-m-d H:i:s')) . "\n\n ";
        			$checkSend = FunctionCommon::sendMail($sendMai, $subJ, $body);
        			if ($checkSend) {
        				$mUser->insert();
        				$this->buttonIn = true;
        			} else {
        				$this->errorArr = array($checkSend);
        			}
        			
        		} else {
        			$this->errorArr['email'] = 'E-mail bạn nhập đã có người sử dụng';
        		}
        	} else {
        		$this->errorArr['nickname'] = "Tên truy cập đã tồn tại";
        	}
        }
        
        if ($this->getGet['c'] == 'up') {
        	$this->flagUp = true;
        	if (isset($_POST['butSub'])) {
        		if ($this->checkValidator($this->getPost)) {
        			$mUser->setAttribute('phone', $this->getPost['phone']);
        			$mUser->setAttribute('phone2', $this->getPost['phone2']);
        			$mUser->setAttribute('fax', $this->getPost['fax']);
        			$mUser->setAttribute('web', $this->getPost['web']);
        			$mUser->setAttribute('hoten', $this->getPost['hoten']);
        			$mUser->setAttribute('gioitinh', $this->getPost['gioitinh']);
        			$mUser->setAttribute('ngaysinh', ($this->getPost['ddNam']."-".$this->getPost['ddThang']."-".$this->getPost['ddNgay']." 00:00:00"));
        			$mUser->setAttribute('diachi', $this->getPost['diachi']);
        			$mUser->setAttribute('congty', $this->getPost['congty']);
        			$mUser->setAttribute('tinh', $this->getPost['tinh']);
        			$mUser->setAttribute('quocgia', $this->getPost['quocgia']);
        			$mUser->update(array('id' => $this->dataUser['id']));
        			$this->buttonUp = true;
        		}
        	} else {
        		$this->getPost = $mUser->getByPrimaryKey($this->dataUser['id']);
        		$birthdayA = explode('-', $this->getPost['ngaysinh']);
        		$this->getPost['ddNam'] = $birthdayA['0'];
        		$this->getPost['ddThang'] = $birthdayA['1'];
        		$this->getPost['ddNgay'] = $birthdayA['2'];
        	}
        }
        
        // Process view
        $objView->assignobj($this);
        $objView->display();
    }
    
	/**
     * actionForget
     * - page foget of controller
     */
    public function actionForget() {
    	
    	// Process init
        $objView = new View ();
        $this->tpl_title = '.::MUA THẺ NHANH::.';
        $this->buttonFo = false;
        
        $mUser = new MUser();
        $this->getPost = FunctionCommon::getPost(array('email', 'captcha'));
        if (isset($_POST['butSub'])) {
	        if (!Validator::isEmail($this->getPost['email'])) {
	        	$this->errorArr['email'] = 'E-mail bạn nhập chưa đúng';
	        }
	        if ($this->getPost['captcha'] != $_SESSION['CAPTCHA']) {
	        	$this->errorArr['captcha'] = 'Bạn nhập mã chưa đúng';
	        }
	        if (count($this->errorArr) == 0) {
	        	if ($mUser->checkEmail($this->getPost['email'])) {
	        		$this->errorArr['email'] = 'E-mail bạn nhập không đúng';
	        	} else {
	        		// Lay thong tin user
	        		$getOneName = $mUser->getOneByAttr(array('email'=>$this->getPost['email']), array('id', 'nickname', 'insert_at'));
	        		// Set pass new
	        		$passNew = substr(md5(microtime()), 0, 6);
	        		$mUser->setAttribute('pass', md5($passNew));
	        		
	        		// Send mail
	        		$sendMai = array(array('name'=>'MuaTheNhanh', 'mail'=>$this->getPost['email']));
        			$subJ = "Cấp lại mật khẩu tại MuaTheNhanh";
        			$body = " + NickName : " . $getOneName['nickname'] . "\n ".
        					"+ Password new : " . $passNew . "\n\n ".
        					"+ Ngày đăng ký : " . FunctionCommon::convertDate($getOneName['insert_at']) . "\n ".
        					"+ Ngày cấp lại : " . FunctionCommon::convertDate(date('Y-m-d H:i:s')) . "\n ";
        			$checkSend = FunctionCommon::sendMail($sendMai, $subJ, $body);
        			if ($checkSend) {
        				$mUser->update(array('id' => $getOneName['id']));
        				$this->buttonFo = true;
        			} else {
        				$this->errorArr = array($checkSend);
        			}
	        	}
	        }
        }
        
        // Process view
        $objView->assignobj($this);
        $objView->display();
    }
    
	/**
     * actionEcode
     * - page index of controller
     */
    public function actionEcode() {
    	
    	// Process init
        $objView = new View ();
        $this->tpl_title = '.::MUA THẺ NHANH::.';
        $this->buttonEc = false;
        
    	if (!$this->loginFlag) {
        	FunctionCommon::sendRedirect('account/login#content');
        }
        
        $mUser = new MUser();
        $this->getPost = FunctionCommon::getPost(array('passOld', 'passNew', 'passNew2'));
        if (isset($_POST['butSub'])) {
        	if ($this->getPost['passNew'] != $this->getPost['passNew2']) {
        		$this->errorArr['passOld'] = 'Bạn nhập 2 mật mã không trùng nhau';
        	}
        	if(md5($this->getPost['passOld']) != $this->dataUser['pass']) {
        		$this->errorArr['passOld2'] = 'Bạn nhập pass ko đúng';
        	}
        	if (count($this->errorArr) == 0){
        		$mUser->setAttribute('pass', md5($this->getPost['passNew']));
        		$mUser->update(array('id' => $this->dataUser['id']));
        		$this->buttonEc = true;
        	}
        }
        
        // Process view
        $objView->assignobj($this);
        $objView->display();
    }
    
    public function checkValidator($data) {
        if (!Validator::isNumber($data['phone'])) {
        	$this->errorArr['phone'] = 'Số điện thoại cố định bạn nhập chưa đúng';
        }
    	if (!Validator::isNumber($data['phone2'])) {
        	$this->errorArr['phone2'] = 'Số điện thoại di động bạn nhập chưa đúng';
        }
    	if (!Validator::isEmail($data['email'])) {
        	$this->errorArr['email'] = 'E-mail bạn nhập chưa đúng';
        }
    	if (!Validator::isNumber($data['fax'])) {
        	$this->errorArr['fax'] = 'Bạn nhập chưa đúng kiểu fax';
        }
        if (strlen($data['nickname']) < 6) {
        	$this->errorArr['nickname'] = "Tên truy cập ít nhất 6 ký tự";
        }
    	if (strlen($data['pass']) < 6) {
        	$this->errorArr['pass'] = "Mật mã ít nhất 6 ký tự";
        }
    	if (strlen($data['txtRePassword']) < 6) {
        	$this->errorArr['txtRePassword'] = "Nhập lại mật mã ít nhất 6 ký tự";
        }
        if ($data['pass'] != $data['txtRePassword']) {
        	$this->errorArr['errPassword'] = "Hai mật mã bạn nhập chưa trùng nhau";
        }
        if (count ($this->errorArr) > 0) {
        	return false;
        } else {
        	return true;
        }
    }
}
?>

